package edu.qqilin.springframework.beans.factory.config;

import edu.qqilin.springframework.beans.BeansException;
import edu.qqilin.springframework.beans.factory.ConfigurableListableBeanFactory;

/**
 * Description: Bean 定义信息的修改者（图纸修改师）
 * <p>
 * 核心功能： 在所有的 BeanDefinition 加载完成之后，但 Bean 还没被实例化之前执行。
 * <p>
 * 用途： 允许你在造对象之前修改图纸。比如修改某个 Bean 的属性值（如数据库连接信息）。
 *
 * @author qqilin1213
 * @version 1.0
 * @date 2025/11/24 20:11
 */
public interface BeanFactoryPostProcessor {
    /**
     * 【在所有的 BeanDefinition 加载完成后，实例化 Bean 对象之前】，
     * 提供修改 BeanDefinition 属性的机制
     *
     * @param beanFactory
     * @throws BeansException
     */
    void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;

}
